package io.sage.ch06.methodrefactoring;

/**
 * 6.2 Inline Method (内联函数)
 * 问题场景：一个函数的本体与名称同样清楚易懂。
 * 重构思路：在函数调用点插入函数本体，然后移除该函数
 * 做法：
 * 1）检查函数，确定它不具多态性
 * 2）找出这个函数的所有被调用点
 * 3）将这个函数的所有被调用点都替换为函数本体。
 * 4）编译，测试
 * 5）删除该函数的定义。
 */
public class InlineMethod {

    private int _numberOfLateDeliveries;


    /**
     * 重构前
     */
    int getRating() {
        return (moreThanFiveLateDeliveries()) ? 2 : 1;
    }

    boolean moreThanFiveLateDeliveries() {
        return _numberOfLateDeliveries > 5;
    }


    /**
     * 重构后
     */
    int getRating_new() {
        return (_numberOfLateDeliveries > 5) ? 2 : 1;
    }

}
